import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { viteCommonjs } from '@originjs/vite-plugin-commonjs'
import { resolve } from 'path'

const pathResolve = (dir) => {
  return resolve(__dirname, '.', dir)
}

// https://vitejs.dev/config/
export default defineConfig({
  base: process.env.NODE_ENV === 'production' ? '/' : '/',
  root: process.cwd(),
  resolve: {
    alias: {
      '@': pathResolve('src')
    }
  },
  publicDir: 'static',
  // 服务端渲染
  server: {
    host: '0.0.0.0',
    port: 5174,
  },
  plugins: [vue(), viteCommonjs()],
  optimizeDeps: {
    include:['element-plus', '@element-plus/icons-vue']
  },
  build: {
    // 清除console和debugger
    terserOptions: {
      compress: {
        drop_console: true,
        drop_debugger: true,
      },
      // rollupOptions: {
      //   output: {
          //配置这个是让不同类型文件放在不同文件夹，不会显得太乱
          // chunkFileNames: 'chunks/[name].[hash].js',//'js/[name]-[hash].js',
          // entryFileNames: '[name].[hash].js',//'js/[name]-[hash].js',
          // assetFileNames: '[ext]/[name]-[hash].[ext]',
          // manualChunks(id) {
          //   //静态资源分拆打包
          //   if (id.includes('node_modules')) {
          //     return id.toString().split('node_modules/')[1].split('/')[0].toString();
          //   }
          // },
      //   },
      // },
    },
    target: 'modules',
    outDir: 'flow', // 指定输出路径
    assetsDir: 'assets', // 指定生成静态文件目录
    assetsInlineLimit: '4096', // 小于此阈值的导入或引用资源将内联为 base64 编码
    chunkSizeWarningLimit: 500, // chunk 大小警告的限制
    minify: 'terser', // 混淆器，terser构建后文件体积更小
    emptyOutDir: true, //打包前先清空原有打包文件
  },
  css: {
    preprocessorOptions: {
      // less: {
      //   modifyVars: customVariables,
      //   javascriptEnabled: true,
      // },
      scss: {
        api: 'modern-compiler'
      }
    },
  },
  define: {
    __INTLIFY_PROD_DEVTOOLS__: false,
    'process.env': process.env,
  },
})
